package util;

import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * Classe criada para manipular datas, criando-as a partir de Strings e
 * comparando-as
 * 
 * @author Grupo 3
 * 
 */
public class ManipulaDatas {
	/**
	 * Cria um GregorianCalendar a partir de uma String passada.
	 * 
	 * @param cal
	 *            Uma String passada como parametro, que tem que ser no formato
	 *            "dd/mm/aaaa hh:mm"
	 * @return Um novo calendario com as informacoes do parametro
	 */
	public GregorianCalendar criaCalendario(String cal) {
		int barra = cal.indexOf("/");
		int dia = Integer.valueOf(cal.substring(0, barra));
		int barra2 = cal.indexOf("/", barra + 1);
		int mes = Integer.valueOf(cal.substring(barra + 1, barra2)) - 1;
		int espaco = cal.indexOf(" ");
		int ano = Integer.valueOf(cal.substring(barra2 + 1, espaco));
		int pontos = cal.indexOf(":");
		int hora = Integer.valueOf(cal.substring(espaco + 1, pontos));
		int minuto = Integer.valueOf(cal.substring(pontos + 1));
		return new GregorianCalendar(ano, mes, dia, hora, minuto);
	}

	/**
	 * Verifica se a dataInicial2 esta entre dataInicial1 e dataFinal
	 * 
	 * @param dataInicial1
	 *            Um GregorianCalendar, que eh uma dataInicial de um evento1
	 * @param dataFinal
	 *            Um GregorianCalendar, que eh uma dataFinal de um evento1
	 * @param dataInicial2
	 *            Um GregorianCalendar, que eh uma dataInicial de um evento2
	 * @return TRUE caso a dataInicial2 esteja entre dataInicial1 e dataFinal ||
	 *         FALSE caso contrario
	 */
	public boolean comparaDatas(GregorianCalendar dataInicial1,
			GregorianCalendar dataFinal, GregorianCalendar dataInicial2) {

		if (dataInicial1.get(Calendar.YEAR) == dataInicial2.get(Calendar.YEAR)
				&& dataInicial1.get(Calendar.DAY_OF_YEAR) == dataInicial2
						.get(Calendar.DAY_OF_YEAR)) {
			if (dataInicial1.getTimeInMillis() <= dataInicial2
					.getTimeInMillis()
					&& dataFinal.getTimeInMillis() >= dataInicial2
							.getTimeInMillis()) {
				return true;

			}
		}
		return false;
	}
}
